@yuke Just make a backup of your config.txt file before changing anything. You need to get your Hdmi timings right before changing anything in the service menu.
Now that your Hdmi timings are as best as you can get them then go over to overscan settings.
We'll worry about the service menu later.
This is taken from the Video timings script readme file.
*Video timings script
*Version - 2.0
hdmi_timings=320 1 20 20 44 240 1 6 7 10 0 0 0 60 0 6400000 1
-Use ARROW keys to position screen
-Press Q to toggle test image
-Press I to input timings
-Press L to load timings from timings_load.txt
-Press B to load timings from boot/config.txt
-Press S to save timings to timings_save.txt
-Press C to save timings to boot/config.txt
-Press D to display current timings
-Press F to calculate frequencies
-Press SPACE or ENTER to reset timings
-Press M to display this menu
-Press X to exit to shell
Program first reads and displays hdmi_timings from /boot/config.txt
-Arrow keys | shift the screen left/right/up/down
-Q | displays a 320x240 test PNG image to visually aid in centering the screen (defined by $TEST_IMAGE variable)
-I | allows user to manually input and generate custom hdmi_timings
-L | loads timings from 'timings_load.txt' (defined by $LOAD_FILE variable)
-B | loads timings from 'boot/config.txt' (defined by $BOOT_CONFIG variable)
-S | saves and parses timings to 'timings_save.txt' (defined by $SAVE_FILE variable) and also saves and replaces timings to 'timings_load.txt'
-C | saves timings to 'boot/config.txt'
-D | displays current timings
-F | calculates and displays horizontal scan rate and vertical refresh rate frequencies
-SPACE or ENTER | resets timings (defined by $SAFE_TIMINGS variable)
-M | clears the screen and displays the main menu
-X | aborts the program and exits to shell
Edit: It's important that you center the image as perfect as you.
Edit 2: Read here here for an explanation about what each hdmi_timings settings mean.
Maybe @maxriptide @Dochartaigh can help out?